package com.hspedu.set_;


import java.util.HashSet;

/**
 * @Author Stringzhua
 * @Date 2024/3/11 20:45
 * description:HashSet案例
 */
@SuppressWarnings("all")
public class HashSet01 {
    public static void main(String[] args) {
        HashSet set = new HashSet();
        /*
         * 说明:
         * 1.在执行add方法时,会返回一个boolean值
         * 2.如果添加成功,返回true,否则返回false
         * 3.可以通过remove指定删除哪个对象
         * */
        System.out.println(set.add("john"));//true
        System.out.println(set.add("lucy"));//true
        System.out.println(set.add("john"));//添加重复元素失败false
        System.out.println(set.add("jack"));//true
        System.out.println(set.add("Rose"));//true

        set.remove("john");
        System.out.println("set = " + set);//3个顺序不保证一定是添加时的顺序


        set = new HashSet();
        System.out.println("set = " + set);//0
        //4.HashSet不能存放相同的元素/数据?
        set.add("lucy");//添加成功
        set.add("lucy");//加入不了
        set.add(new Dog("tom"));//ok
        set.add(new Dog("tom"));//ok
        System.out.println("set = " + set);

        //再加深一下印象,经典面试题
        //看源码,做分析,查看源码分析
        //去看它的源码以及add到底发生了什么?==>底层机制
        set.add(new String("hsp"));//ok
        set.add(new String("hsp"));//加入不了
        System.out.println("set = " + set);
    }
}

class Dog {//定义Dog类
    private String name;

    public Dog(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                '}';
    }
}